#include "connection.h"
Connection::Connection(QTcpSocket *_socket)
{
    socket = _socket;
    connect(socket, SIGNAL(readyRead()), this, SLOT(recv()));
    connect(socket, SIGNAL(disconnected()), this, SLOT(disconnect()));

    this->indice_lista_conexion = -1;
}

void Connection::recv() {
        message.append(socket->readAll());

        int pos;
        while((pos = message.indexOf("\n\r")) > -1) {
                parseMessage(QString(message.left(pos+2)));
                message = message.mid(pos+2);
        }
}

void Connection::produciendoProducto(int productA){
    QString msg;
    msg.append(QString("%1").arg(productA));
    msg.append("/n");
    emit newMessage(this,msg);
}
void Connection::parseMessage(QString msg) {

       if(msg.startsWith("productoa"))
       {
           msg = "productoA del cliente" +this->nick + ":" + msg.mid(4);
           emit newMessage(this,msg);

       }
       else if(msg.startsWith("productob"))
       {
           msg = "productoB del cliente" +this->nick + ":" + msg.mid(4);
           emit newMessage(this,msg);

       }
       else if(msg.startsWith("productoc"))
       {
           msg = "productoC del cliente" +this->nick + ":" + msg.mid(4);
           emit newMessage(this,msg);

       }
       else
          if(msg.startsWith("CON:")) {
                // Obtener el nick
                QString elresto = msg.mid(4 );
                this->nick = elresto.mid(0,elresto.length()-2) ;
                emit connected(this, nick);
                //sendMessage("CONACCEPT:ok\n\r");
            }

      /*          int start = msg.indexOf("Nick: ");
                int end = msg.indexOf("\n", start);
                QString newNick = msg.mid(start + 6, end - start - 6);
*/

}
void Connection::sendMessage(QString msg) {
    //READ: Si el socket de la conexion es valido entonces enviar el mensaje
    // Pero convertirlo en ASCII
    if (socket->isValid())
        socket->write(msg.toAscii());

}
void Connection::disconnect() {
       //READ: Emitir una seal al server para desconectarse
        emit disconnected(this, nick);

}

void Connection::sendNicks(QStringList *nicks) {
        //READ: Enviar la lista de nicks separadas por comas
        //si no hay entonces envia una letra X
         if(nicks->size() != 0) {
                sendMessage("NICKLIST:" + nicks->join(",") + "\n\r");
        } else {
                sendMessage("NICKLIST:X\n\r");
        }
}
